package org.jeecg.modules.wms.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.wms.entity.WmsWarehouse;
import org.jeecg.modules.wms.vo.WmsWarehouseLocationVO;

/**
 * 仓库信息服务接口
 */
public interface IWmsWarehouseService extends IService<WmsWarehouse> {

    /**
     * 分页查询仓库列表
     * @param page 分页参数
     * @return 仓库列表（包含库位统计信息）
     */
    IPage<WmsWarehouseLocationVO> queryWarehousePageList(Page<WmsWarehouse> page, WmsWarehouse warehouse);

    /**
     * 根据ID查询仓库信息
     * @param id 仓库ID
     * @return 仓库信息（包含库位统计信息）
     */
    WmsWarehouseLocationVO queryWarehouseById(String id);

    /**
     * 保存仓库信息
     * @param wmsWarehouse 仓库信息
     * @return 是否成功
     */
    boolean saveWarehouse(WmsWarehouse wmsWarehouse);

    /**
     * 更新仓库信息
     * @param wmsWarehouse 仓库信息
     * @return 是否成功
     */
    boolean updateWarehouse(WmsWarehouse wmsWarehouse);

    /**
     * 删除仓库信息
     * @param id 仓库ID
     * @return 是否成功
     */
    boolean deleteWarehouse(String id);

    /**
     * 批量删除仓库信息
     * @param ids 仓库ID列表，多个ID使用逗号分隔
     * @return 是否成功
     */
    boolean batchDeleteWarehouse(String ids);

    /**
     * 切换仓库状态
     * @param id 仓库ID
     * @return 是否成功
     */
    boolean toggleWarehouseStatus(String id);
    
    /**
     * 根据物料类型获取推荐仓库
     * @param materialTypes 物料类型，多个类型用逗号分隔
     * @return 推荐的仓库信息
     */
    WmsWarehouse getRecommendedWarehouse(String materialTypes);
} 